關於Index(索引),在剛開始接觸資料庫的時候,總是對他濛濛懂懂
知道如果用了他,搜尋速度就會變快
知道他有用到b+tree,但卻不知道他是怎麼用的
所以想藉著這個筆記,來稍微介紹Index在資料庫中到底是什麼樣的存在
首先,資料庫中的Index,就跟書中的Index的用法是雷同的,用意都是透過有系統的編排,來讓使用者更快的找到資料
而在資料庫中,這個Index的有系統的編排,最常見的就是由小排到大(asc/desc)的做法來排
接下來,在書中,Index是擷取整本書的標題然後印在同一個區域
在資料庫中,Index也是做一樣的內容,Index會將選定的欄位資料存在另一個地方提供資料庫做快速搜尋
所以當你有需要針對單一個欄位來進行搜尋,比如
Table user
Column Name | Data Type | Index |
---|---|---|
id | int | |
name | varchar | |
phone | varchar | Index1 |
user裡面有三筆資料
id | name | phone | diskAddress |
---|---|---|---|
1 | user1 | 0912333555 | 0x12345 |
3 | user3 | 0912345678 | 0x56789 |
5 | user5 | 0908070605 | 0x13579 |
Index1裡面會是
phone | diskAddress |
---|---|
0908070605 | 0x13579 |
0912333555 | 0x12345 |
0912345678 | 0x56789 |
此時,如果我想要找一個使用者,他的電話號碼是"0912345678"
select * from user where phone = '0912345678';
這時候資料庫的行為會是
3 user3 0912345678
取出來這大致是Index的運作方式
Ref: https://use-the-index-luke.com/sql/anatomy